package com.aspose.cells;

abstract class zkd {
   public static int a(zahb var0, int var1, int var2) {
      int var3 = var0.b() - 1;
      if (var3 < 0) {
         return -1;
      } else {
         if (var2 < 0) {
            var2 = 0;
         } else if (var2 > var3) {
            var2 = var3;
         }

         int var4 = var0.c(var2);
         if (var1 == var4) {
            return var2;
         } else if (var1 < var4) {
            return var2 == 0 ? -1 : a(var0, var1, Math.max(0, var2 + var1 - var4), var2 - 1);
         } else {
            return var2 == var3 ? -var3 - 2 : a(var0, var1, var2 + 1, Math.min(var3, var2 + var1 - var4));
         }
      }
   }

   public static int a(zahb var0, int var1, int var2, int var3) {
      int var4 = var0.c(var2);
      if (var1 == var4) {
         return var2;
      } else if (var1 < var4) {
         return -var2 - 1;
      } else if (var2 == var3) {
         return -var3 - 2;
      } else {
         var3 = Math.min(var3, var2 + var1 - var4);
         var4 = var0.c(var3);
         if (var1 == var4) {
            return var3;
         } else if (var1 > var4) {
            return -var3 - 2;
         } else {
            var2 = Math.max(var2 + 1, var3 + var1 - var4);
            --var3;
            if (var3 < var2) {
               return -var2 - 1;
            } else if (var3 == var2) {
               var4 = var0.c(var3);
               if (var1 < var4) {
                  return -var3 - 1;
               } else {
                  return var1 == var4 ? var3 : -var3 - 2;
               }
            } else {
               while(true) {
                  int var5 = var2 + var3 >> 1;
                  var4 = var0.c(var5);
                  if (var5 == var2) {
                     if (var1 == var4) {
                        return var2;
                     }

                     if (var1 < var4) {
                        return -var2 - 1;
                     }

                     if (var2 < var3) {
                        var4 = var0.c(var3);
                        if (var1 == var4) {
                           return var3;
                        }

                        if (var1 < var4) {
                           return -var3 - 1;
                        }
                     }

                     return -var3 - 2;
                  }

                  if (var1 < var4) {
                     --var3;
                     if (var3 == var2) {
                        var4 = var0.c(var2);
                        if (var1 == var4) {
                           return var2;
                        }

                        if (var1 < var4) {
                           return -var2 - 1;
                        }

                        return -var5 - 1;
                     }

                     var2 = Math.max(var2, var5 + var1 - var4);
                  } else {
                     if (var1 <= var4) {
                        return var5;
                     }

                     ++var2;
                     if (var3 == var2) {
                        var4 = var0.c(var2);
                        if (var1 == var4) {
                           return var2;
                        }

                        if (var1 > var4) {
                           return -var3 - 2;
                        }

                        return -var2 - 1;
                     }

                     var3 = Math.min(var3, var5 + var1 - var4);
                  }
               }
            }
         }
      }
   }
}
